// 截取字符串 仅保留需要的长度
export function cut(str: string, len: number): string {
  if (str) {
    str = str.replaceAll(/[\r\n]/g, '')
    // 如果长度是正数
    if (len > 0) {
      return str.length > len ? `${str.substring(0, len)}..` : str
    }

    // 如果长度是负数
    const positiveLength = Math.abs(len)
    return str.length > positiveLength ? `..${str.substring(str.length - positiveLength)}` : str
  }
  else {
    return ''
  }
}

// 验证昵称 只允许中文、英文、数字、下划线
export function isValidNick(nickname: string): boolean {
  const regex = /^[\w\u4E00-\u9FA5]+$/
  return regex.test(nickname)
}

/**
 * 校验是否为合法手机号（中国大陆）
 * @param phone 手机号字符串
 * @returns boolean
 */
export function isValidPhone(phone: string): boolean {
  if (!phone) return false;
  let purePhone = phone.replace(/\s+/g, ''); // 去除空格
  const reg = /^(?:(?:\+|00)86)?1[3-9]\d{9}$/;
  return reg.test(purePhone);
}

// 格式化手机号 中间带空格 3 4 4 分割
export function formatPhone(value: string) {
  if (!value) return ''
  // 去掉非数字
  const pure = value.replace(/\D/g, '').slice(0, 11)
  const len = pure.length
  if (len > 7) return `${pure.slice(0, 3)} ${pure.slice(3, 7)} ${pure.slice(7)}`
  if (len > 3) return `${pure.slice(0, 3)} ${pure.slice(3)}`
  return pure
}

/**
 * 手机号去格式化（将 188 1234 5678 => 18812345678）
 */
export function unFormatPhone(phone: string): string {
  if (!phone) return '';
  return phone.replace(/\s+/g, '');
}

/**
 * 格式化车牌号（将第2位和后面的数字字母之间加“·”）
 * 例：浙A84F274 => 浙A·84F274
 */
export function formatPlate(plate: string): string {
  if (!plate) return '';

  // 统一去空格
  const clean = plate.replace(/\s+/g, '');

  // 车牌长度一般 7 位（传统）或 8 位（新能源）
  // 我们默认取前2位 + “·” + 剩余字符
  return clean.slice(0, 2) + '·' + clean.slice(2);
}

/**
 * 车牌去格式化（将 浙A·84F274 => 浙A84F274）
 */
export function unFormatPlate(plate: string): string {
  if (!plate) return '';
  // 去掉中间 · 或 .
  return plate.replace(/[·\.]/g, '');
}
